#ifndef MATRIZ_H_
#define MATRIZ_H_

#include <stdio.h>
#include <iostream>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_block.h>
#include <gsl/gsl_linalg.h>
#include <gsl/gsl_vector.h>


namespace std{

	class _Matriz {
		gsl_matrix* matrix;
		double* mat;
		size_t rowSize;
		size_t columnSize;
		size_t tdaSize;

	public:
		_Matriz();

		int getColumnSize() const {
			return columnSize;
		}

		void setColumnSize(size_t columnSize) {
			this->columnSize = columnSize;
		}

		double* getMat() const {
			return mat;
		}

		void setMat(double* mat) {
			this->mat = mat;
		}

		int getRowSize() const {
			return rowSize;
		}

		void setRowSize(size_t rowSize) {
			this->rowSize = rowSize;
		}

		int getTdaSize() const {
			return tdaSize;
		}

		void escribir();

		const gsl_matrix* getMatrix() const {

			gsl_matrix* m = gsl_matrix_alloc(getRowSize(),getColumnSize());

			gsl_matrix_memcpy(m,this->matrix);

			return m;
		}

		void setMatrix(const gsl_matrix*& matrix) {
			gsl_matrix_memcpy(this->matrix,matrix);
		}

		void insertMatrix();
	};
}
#endif /* MATRIZ_H_ */
